iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
自我挑戰組

探索 Spring Boot Doc系列 第 17

Doc 6.8.3 Automatic Restart: Using a Trigger File

  • 分享至 

  • xImage
  •  

spring-boot-devtools(以下簡稱 devtools) 在 classpath 上檔案有所變更的時候,
會觸發(原文 trigger)重啟app 。可以透過 application.yml 或是透過 java.lang.System 設定環境變數,再啟動app 之前就關閉 Restart 功能,這兩者差異會在於 ReloadClassLoader 一眾檔案是不是會被載入進 JVM(意味者佔用記憶體)。

我們也知道 devtools 預設會將靜態資源或是模板引擎,不會觸發重啟,而是觸發 Live Reload 的重新載入,另一方面 devtools 有提供預設的註冊檔案,關閉 spring boot 提供功能的快取(例如 模板引擎快取為關閉),當然在產品階段的時候,不會將 devtools 一同打包進去 jar ,自然產品(原文 production) 階段不會將快取關閉。

Doc 6.8.3 Using a Trigger File
官方原文

If you work with an IDE that continuously compiles changed files, you might prefer to trigger restarts only at specific times. To do so, you can use a “trigger file”, which is a special file that must be modified when you want to actually trigger a restart check.

devtools 能偵測 classpath 上的變化去觸發啟動,但也可以只針對特定項目的變化來觸發重啟。
官方這裡給出一個範例,假設專案結構如下:

src
+- main
   +- resources
      +- .reloadtrigger

可將devtools設定成.reloadtrigger 該檔案,若這個檔案有任何的變更,devtools 會自動重啟。
設定的指令如下:

spring.devtools.restart.trigger-file=.reloadtrigger

devtools 的 trigger file 可以設定成 classpath 上的任一支 java 檔案,也不一定要設置專案其下的檔案,也可以是本機端的任何檔案( 參考資料處的 {設定範例一} 和 {設定範例二} )

參考資料:
{官方} Restart TriggerFile

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.devtools.restart.triggerfile

{設定範例一} 設定在本機端的特定檔案

https://www.codingninjas.com/studio/library/spring-boot-devtools

{設定範例二} 設定成專案目錄的特定 java 檔
https://www.logicbig.com/tutorials/spring-framework/spring-boot/trigger-file.html


上一篇
Doc 6.8.3 Automatic Restart & 6.8.4 Live Reload
下一篇
Doc 6.8.3 Customizing the Restart Classloader
系列文
探索 Spring Boot Doc30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言